package com.lovesher.payment.service.resposity.base;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.lovesher.payment.common.resposity.base.Pageable;
import com.lovesher.payment.common.resposity.search.BaseSearch;

public interface Mapper<T> {
	/**
	 * 
	 * 查询（根据主键ID查询）
	 * 
	 **/
	T selectById(Long id);

	/**
	 * 
	 * 删除（根据主键ID删除）
	 * 
	 **/
	int deleteById(Long id);

	/**
	 * 
	 * 添加
	 * 
	 **/
	long insert(T record);

	/**
	 * 
	 * 修改
	 * 
	 **/
	int update(T record);

	/**
	 * 查找实体对象分页
	 * 
	 * @param pageable
	 *            分页信息
	 * @return 实体对象分页
	 */
	List<T> findList(@Param("pageable") Pageable pageable);

	/**
	 * 获取记录总数
	 * 
	 * @param pageable
	 * 
	 * @return
	 */
	Integer countForList(@Param("pageable") Pageable pageable);
	
	/**
	 * 查找所有
	 * 
	 * @return 
	 */
	List<T> findAll();
	
	/**
	 * 查找实体对象分页
	 * 
	 * @param pageable
	 *            分页信息
	 * @return 实体对象分页
	 */
	List<T> findListByBaseSearch(@Param("pageable") Pageable pageable,@Param("bean") BaseSearch bean);
	
	/**
	 * 获取记录总数
	 * 
	 * @param pageable
	 * 
	 * @return
	 */
	Integer countByBaseSearch(@Param("pageable") Pageable pageable,@Param("bean") BaseSearch bean);
	
	/**
	 * 获取记录总数
	 * 
	 * @param pageable
	 * 
	 * @return
	 */
	Integer count();
	
	
	
	T selectByUserId(@Param("userId")Long userId);
}
